package top.atcra.rpc.transport.message;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 响应头结构<br>
 * 3个字节的魔数<br>
 * 1个字节的版本号<br>
 * 2个字节的头部长度<br>
 * 4个字节的响应长度<br>
 * 1个字节的序列化方式<br>
 * 1个字节的压缩方式<br>
 * 8个字节的请求id<br>
 * 8个字节的响应时间戳<br>
 * 1个字节的响应码<br>
 * <p>
 * 响应体<br>
 */
@Data
@Accessors(chain = true)
public class RPCResponse {
    // 请求的id
    private long requestId;

    // 请求的类型，压缩的类型，序列化的方式
    private byte compressType;
    private byte serializeType;

    private long timestamp;

    /**
     * 响应码:<br>
     * 成功码  20(方法成功调用)   21（心跳成功返回） <br>
     * 负载码  30（服务器负载过高，限流） <br>
     * 错误码（客户端错误）  40 <br>
     * 错误码（服务端错误）  50（请求的方法不存在）
     */
    private byte code;

    // 具体的消息体
    private Object body;


}
